import json
import pandas as pd
from ast import literal_eval
import re
import datetime

# 设置日期格式
datatime = datetime.datetime.now().strftime("%Y%m%d")

# 读取 txt 文件内容
with open("20250421_种子实时价格.txt", "r", encoding="utf-8-sig") as f:
    content = f.read()
    print("文件内容：\n", content)

# 将字符串解析为 Python 列表对象（兼容单引号/双引号）
try:
    # 先尝试用 json 解析（适用于双引号）
    data_list = json.loads(content)
except json.JSONDecodeError:
    # 若失败，改用 ast.literal_eval（兼容单引号）
    data_list = literal_eval(content)

# 清理数据中的非法字符
clean_data_list = []
for item in data_list:
    clean_item = {key: re.sub(r'[^\w\s.,!?]', '', value) if isinstance(value, str) else value for key, value in item.items()}
    clean_data_list.append(clean_item)

# 提取所有字典键作为 Excel 表头
headers = list(clean_data_list[0].keys()) if clean_data_list else []

# 构建 DataFrame 并保存为 Excel
df = pd.DataFrame(clean_data_list, columns=headers)
df.to_excel(f"{datatime}_种子实时价格.xlsx", index=False, engine="openpyxl")

print("Excel 文件已生成")
